/*-
* See the file LICENSE for redistribution information.
*
* Copyright (c) 2002-2006
* Sleepycat Software. All rights reserved.
*
* $Id: INDeleteInfo.java,v 1.1 2006/05/06 09:00:14 ckaestne Exp $
*/
package com.sleepycat.je.tree;
import java.nio.ByteBuffer;
import com.sleepycat.je.dbi.DatabaseId;
import com.sleepycat.je.log.LogEntryType;
import com.sleepycat.je.log.LogException;
import com.sleepycat.je.log.LogReadable;
import com.sleepycat.je.log.LogUtils;
import com.sleepycat.je.log.LogWritable;
import com.sleepycat.je.log.LoggableObject;
/**
* INDeleteInfo encapsulates the information logged about the removal of a
* child from an IN during IN compression.
*/
public class INDeleteInfo
implements LoggableObject, LogReadable, LogWritable {
private long deletedNodeId;
private byte[] deletedIdKey;
private DatabaseId dbId;
/**
* Create a new delete info entry.
*/
public INDeleteInfo(long deletedNodeId,
byte[] deletedIdKey,
DatabaseId dbId) {
this.deletedNodeId = deletedNodeId;
this.deletedIdKey = deletedIdKey;
this.dbId = dbId;
}
/**
* Used by logging system only.
*/
public INDeleteInfo() {
dbId = new DatabaseId();
}
/*
* Accessors.
*/
public long getDeletedNodeId() {
return deletedNodeId;
}
public byte[] getDeletedIdKey() {
return deletedIdKey;
}
public DatabaseId getDatabaseId() {
return dbId;
}
/*
* Logging support for writing.
*/
/**
* @see LoggableObject#getLogType
*/
public LogEntryType getLogType() {
return LogEntryType.LOG_IN_DELETE_INFO;
}
/**
* @see LoggableObject#marshallOutsideWriteLatch
* Can be marshalled outside the log write latch.
*/
public boolean marshallOutsideWriteLatch() {
return true;
}
/**
* @see LoggableObject#countAsObsoleteWhenLogged
*/
public boolean countAsObsoleteWhenLogged() {
return false;
}
/**
* @see LoggableObject#postLogWork
*/
public void postLogWork(long justLoggedLsn) {
}
/**
* @see LoggableObject#getLogSize
*/
public int getLogSize() {
return LogUtils.LONG_BYTES +
LogUtils.getByteArrayLogSize(deletedIdKey) +
dbId.getLogSize();
}
/**
* @see LogWritable#writeToLog
*/
public void writeToLog(ByteBuffer logBuffer) {
LogUtils.writeLong(logBuffer, deletedNodeId);
LogUtils.writeByteArray(logBuffer, deletedIdKey);
dbId.writeToLog(logBuffer);
}
/**
* @see LogReadable#readFromLog
*/
public void readFromLog(ByteBuffer itemBuffer, byte entryTypeVersion)
throws LogException {
deletedNodeId = LogUtils.readLong(itemBuffer);
deletedIdKey = LogUtils.readByteArray(itemBuffer);
dbId.readFromLog(itemBuffer, entryTypeVersion);
}
/**
* @see LogReadable#dumpLog
*/
public void dumpLog(StringBuffer sb, boolean verbose) {
sb.append("<INDeleteEntry node=\"").append(deletedNodeId);
sb.append("\">");
sb.append(Key.dumpString(deletedIdKey, 0));
dbId.dumpLog(sb, verbose);
sb.append("</INDeleteEntry>");
}
/**
* @see LogReadable#logEntryIsTransactional
*/
public boolean logEntryIsTransactional() {
return false;
}
/**
* @see LogReadable#getTransactionId
*/
public long getTransactionId() {
return 0;
}
}